《Android 安全(三)》动态调试Smali

环境

  • Android Studio 3.3.2
  • SmaliIdea Plugin
  • 自己随手写一个Android应用
  • baksmali

操作

安装SmaliIdea插件

编制测试应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class MainActivity extends AppCompatActivity {
private int count = 0;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
TextView textView = findViewById(R.id.tv_content);

Button button = findViewById(R.id.bt_change_text);

button.setOnClickListener(v -> {
count++;
textView.setText(String.format(Locale.CHINESE, "Tap %d", count));
});
}
}

打包成Apk文件

为了保证android:debuggable="true",我们打包成debug版本即可。或者手动在AndroidManifest.xml文件中设置也行。

反编译

  • baksmali d app-debug.apk -o ~/projects/myapp/src

启动程序并转发端口

  • 启动测试程序主界面
    adb shell am start -D -n cn.onlyloveyd.smali/cn.onlyloveyd.smali.MainActivity

  • 启动“Android Device Monitor”,记住pid和后面8700端口,然后一定关闭Android Device Monitor

  • 转发端口

导入工程至Android Studio

  • “New” -》“import Project”,选择刚才创建的工程目录

  • 选择”Create project from existing sources”

  • 一直继续直到“Finish”

  • 设置“src”文件加为源文件

  • “Edit Configurations”并配置JDK

调试

  • 执行“Run” -》 “Debug XXX”
  • 跳转到断点处,可执行单步调试
# Smali
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×